﻿#pragma once

#include "cat.hpp"
#include "cat-window.hpp"

#ifdef __cplusplus
#define MODULE_EXPORT extern "C" EXPORT
#define MODULE_EXTERN extern "C"
#else
#define MODULE_EXPORT EXPORT
#define MODULE_EXTERN extern
#endif

/*
* 声明一个模块
*/
#define CAT_DECLARE_MODULE()                                              \
	static cat_module_t *cat_module_pointer;                              \
	MODULE_EXPORT void cat_module_set_pointer(cat_module_t *module);      \
	void cat_module_set_pointer(cat_module_t *module)                     \
	{                                                                     \
		cat_module_pointer = module;									  \
	}                                                                     \
	cat_module_t *cat_current_module(void) { return cat_module_pointer; } 

/*
* 加载模块
*/
MODULE_EXPORT bool cat_module_load(void);

/**********************可选非必须*******************************/
/*
* 卸载模块
*/
MODULE_EXPORT void cat_module_unload(void);

MODULE_EXPORT const char* cat_module_name(void);

MODULE_EXPORT const char* cat_module_description(void);

MODULE_EXPORT const char* cat_module_author(void);

